<template>
  <el-breadcrumb class="app-breadcrumb" separator="/">
    <transition-group name="breadcrumb">
      <el-breadcrumb-item v-for="(item,index) in levelList" :key="item.path">
        <span
          v-if="item.redirect==='noRedirect'||index==levelList.length-1"
          class="no-redirect"
        >{{ item.meta.title }}</span>
        <a v-else @click.prevent="handleLink(item)">{{ item.meta.title }}</a>
      </el-breadcrumb-item>
    </transition-group>
  </el-breadcrumb>
</template>

<script>
    import pathToRegexp from 'path-to-regexp'

    export default {
        data() {
            return {
                levelList: null
            }
        },
        watch: {
            $route() {

                this.getBreadcrumb()
            }
        },
        created() {
            this.getBreadcrumb()
        },
        methods: {
            getBreadcrumb() {
                // only show routes with meta.title
                const matchedz = this.$route.matched.filter(item => item.meta && item.meta.title)

                const route = this.$route; let matched = []

                const newAdd = matchedz[1]? matchedz[1].name.indexOf('_') > -1:false

                if (route.name.indexOf('newCase')>-1) {
                    let title = route.query.page
                    if (route.query.page === 'SportMedicine') title = 'Sport Medicine'
                    if (route.query.page === 'SportScience') title = 'Sport Science'

                    if (route.query.id) {
                        matchedz[1].meta.title = this.$caseIdFormat(route.query.page, route.query.id)
                    } else if (!newAdd) {
                        matchedz[1].meta.title = 'New case'
                    }
                    matched = matched.concat(matchedz[0], [{ path: '/', redirect: `${matchedz[0].redirect}?tab=${route.query.page}`, meta: { title: title }}], matchedz[1])
                } else if (route.name === 'HomeCase') {
                    if (route.query.id) {
                        matchedz[0].meta.title = this.$caseIdFormat(route.query.page, route.query.id)
                    } else {
                        matchedz[0].meta.title = 'Case'
                    }
                    matched = matchedz
                } else if (route.name === 'userInfo') {
                  matchedz[1].meta.title = route.query.member
                  matched = matchedz
                }else if(route.name.indexOf('_train')>-1) {
                   matched = matched.concat(
                       matchedz[0],
                   [{ path: '/', redirect: `${matchedz[0].redirect}?tab=${route.query.page}`, meta: { title: route.query.page }}],
                    matchedz[1],
                    matchedz[2]

                   )
                } else {
                    matched = matchedz.concat(matched)
                }


                // const first = matched[0]
                // if (!this.isDashboard(first)) {
                //     matched = [{ path: '/home', meta: { title: 'Home' } }].concat(matched)
                // }
                const levelList = matched.filter(item => item?item.meta && item.meta.title && item.meta.breadcrumb !== false: false)
                this.levelList = levelList
                this.$log(function() {
                    console.log('levelList', levelList)
                })
            },
            isDashboard(route) {
                const name = route && route.name
                if (!name) {
                    return false
                }
                return name.trim().toLocaleLowerCase() === 'Dashboard'.toLocaleLowerCase()
            },
            pathCompile(path) {
                // To solve this problem https://github.com/PanJiaChen/vue-element-admin/issues/561
                const { params } = this.$route
                var toPath = pathToRegexp.compile(path)
                return toPath(params)
            },
            handleLink(item) {

                let { redirect, path } = item

            if(item.name ==="_trainDetails"){
              path ={path,query:this.$route.query}
              //  }
              this.$router.push(path)
                //let {actionInstruct,page,size,id,pageNum} =this.$route.query
                // item.query  = this.$route.query
                // this.$router.replace(item)
                 return
              }
                if (redirect) {
                    this.$router.push(redirect)
                    return
                }
                debugger
                this.$router.push(this.pathCompile(path))
            }
        }
    }
</script>

<style lang="scss" scoped>
  .app-breadcrumb.el-breadcrumb {
    display: inline-block;
    font-size: 14px;
    line-height: 50px;
    margin-left: 8px;

    .no-redirect {
      color: #97a8be;
      cursor: text;
    }
  }
</style>
